import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

// 状态码处理函数
const dealStatus = (resp: AxiosResponse) => {
  const status = resp.status;
  if (status >= 500) {
    // message.error(status + '服务器错误');
  } else if (status === 404) {
    // message.error(status + '地址错误');
  } else if (status === 403) {
    // message.error(status + '权限不足');
  } else if (status === 401) {
    // message.error(status + '未经授权');
    // tokenStore.token = '';
  } else {
    // message.error('错误代码：' + status);
  }
  return resp;
};

// 设置默认项
const instance = axios.create({
  baseURL: '/',
  timeout: 10000,
  headers: { 'Cache-Control': 'no-cache' }
});
// 请求拦截器
instance.interceptors.request.use(
  // 添加请求头
  (config: AxiosRequestConfig) => {
    if (config?.headers) {
      config.headers.Authorization = '63a3e5ab-54a2-4e43-a04d-c32c9f6fd6fc';
    }
    return config;
  },
  // 错误处理
  error => {
    // message.error('请求超时：' + error);
    return Promise.reject(error);
  }
);
// 响应拦截器
instance.interceptors.response.use(
  // 响应处理
  response => {
    // 返回200，但服务器响应错误的情况
    if (response.status && response.status === 200 && response.data.rc && response.data.rc !== 0) {
      Promise.reject(new Error(response.data.message));
      return response;
    } else {
      return response;
    }
  },
  // 错误处理
  error => {
    // 响应超时
    if (error.message.includes('timeout')) {
      // message.error('网络超时，请刷新重试');
    }
    // 错误代码处理
    error.response && dealStatus(error.response);
    return Promise.reject(error);
  }
);

export default instance;
